home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 02 Help & Utilities / HEX2BI.SEQ < prev    next >
Text File  |  2019-04-13  |  4KB  |  126 lines

  1. 10 goto370
  2. 20 rem  ******************************
  3. 30 rem  * hex.to.ascii               *
  4. 40 rem  * by tony romer [74725.1470] *
  5. 50 rem  *                            *
  6. 60 rem  * converts files captured in *
  7. 70 rem  * compuserve in the form:    *
  8. 80 rem  * :180000000108......        *
  9. 90 rem  * to true sequential/program *
  10. 100 rem * form.                      *
  11. 110 rem * -------------------------- *
  12. 120 rem * required if you cannot     *
  13. 130 rem * capture programs in their  *
  14. 140 rem * true form, but have a      *
  15. 150 rem * capture buffer in your     *
  16. 160 rem * terminal program.          *
  17. 170 rem * will skip over unneeded    *
  18. 180 rem * characters in the list.    *
  19. 190 rem * also strips headers.       *
  20. 200 rem ******************************
  21. 210 rem * input filename to convert  *
  22. 220 rem * from, and file to convert  *
  23. 230 rem * to. both files are handled *
  24. 240 rem * on disk simultaneously.    *
  25. 250 rem * only requirement is that   *
  26. 260 rem * disk has enough space left *
  27. 270 rem * for new file. new file     *
  28. 280 rem * will be about 1/3 size of  *
  29. 290 rem * input hexadecimal version. *
  30. 300 rem ******************************
  31. 310 rem * chr$(34)=  "(quote)        *
  32. 320 rem * chr$(144)= black           *
  33. 330 rem * chr$(145)= cursor up       *
  34. 340 rem * chr$(147)= home & clear    *
  35. 350 rem * screen to black on yellow  *
  36. 360 rem ******************************
  37. 370 poke 53280,7:poke 53281,7:print chr$(144)
  38. 380 quote$=chr$(34):header=0
  39. 390 goto440
  40. 400 rem *****************************
  41. 410 rem * read input & output       *
  42. 420 rem * filenames.                *
  43. 430 rem *****************************
  44. 440 print chr$(147)
  45. 450 input "file to convert from: ";infile$
  46. 460 print:input "output filename: ";outfile$
  47. 470 input"output file type (s/p) ";type$
  48. 480 print:print:open 15,8,15,"i"
  49. 490 rem ****************************
  50. 500 rem * purge prev output file!!!*
  51. 510 rem ****************************
  52. 520 rem print#15,"s0:"outfile$
  53. 530 goto580
  54. 540 rem *****************************
  55. 550 rem * input  on channel 2.      *
  56. 560 rem * output on channel 3.      *
  57. 570 rem *****************************
  58. 580 open 2,8,2,infile$
  59. 590 if status <> 0 then1240
  60. 600 open 3,8,3,outfile$+","+type$+",w"+quote$
  61. 610 if status <> 0 thenprint:printoutfile$;" ":goto1240
  62. 620 goto670
  63. 630 rem ****************************
  64. 640 rem * scan for start of buffer *
  65. 650 rem * must be a colon.         *
  66. 660 rem ****************************
  67. 670 get#2,h1$:if status <> 0 then1240
  68. 680 if h1$ <> ":" then670
  69. 690 goto740
  70. 700 rem *****************************
  71. 710 rem * set byte counter.         *
  72. 720 rem * skip header.              *
  73. 730 rem *****************************
  74. 740 bcount=0:rem byte counter
  75. 750 fori=1to8:get#2,h1$:next:if header then gosub1230
  76. 760 goto860
  77. 770 rem ****************************
  78. 780 rem * each byte is represented *
  79. 790 rem * by a hex pair.           *
  80. 800 rem * h1$ * 16 + h2$           *
  81. 810 rem * read from file on disk   *
  82. 820 rem ****************************
  83. 830 rem * end program when disk    *
  84. 840 rem * read fails.              *
  85. 850 rem ****************************
  86. 860 get#2,h1$
  87. 870 if status <> 0 then1240
  88. 880 goto930
  89. 890 rem ****************************
  90. 900 rem * edit hex digits. skip if *
  91. 910 rem * not a valid digit.       *
  92. 920 rem ****************************
  93. 930 if h1$ < "0" or h1$ > "F" then670
  94. 940 if h1$ > "9" and h1$ < "A" then670
  95. 950 get#2,h2$
  96. 960 if status <> 0 then1240
  97. 970 if h2$ < "0" or h2$ > "F" then670
  98. 980 if h2$ > "9" and h2$ < "A" then670
  99. 990 if h1$ < "A" then h1=asc(h1$)-48
  100. 1000 if h1$ >= "A" then h1=asc(h1$)-183
  101. 1010 if h2$ < "A" then h2=asc(h2$)-48
  102. 1020 if h2$ >= "A" then h2=asc(h2$)-183
  103. 1030 byte=h1*16+h2
  104. 1040 bcount=bcount+1
  105. 1050 if bcount > 24 then670
  106. 1060 print#3,chr$(byte);
  107. 1070 if status <> 0 thenprint:printoutfile$;" ":goto1240
  108. 1080 nc=nc+1
  109. 1090 goto1160
  110. 1100 rem *****************************
  111. 1110 rem * since process is so very  *
  112. 1120 rem * time consuming, let user  *
  113. 1130 rem * see that process is going.*
  114. 1140 rem * (very i/o driven.)        *
  115. 1150 rem *****************************
  116. 1160 print"transferred characters: ";nc:print chr$(145);
  117. 1170 goto860
  118. 1180 rem ***************************
  119. 1190 rem * skip header checksum.   *
  120. 1200 rem * some programs may need  *
  121. 1210 rem * this sub for 1st block. *
  122. 1220 rem ***************************
  123. 1230 for i=1to12:get#2,h1$:next:bcount=6:header=0:return
  124. 1240 input#15,a,dstatus$:close2:close3
  125. 1250 close 15:print:print dstatus$:end
  126.